package com.xlzcx.xltz.dao;

import com.xlzcx.xltz.entity.BTweet;
import com.xlzcx.xltz.entity.vo.BTweetVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 作者: 李咨辰
 * 文件名: BTweetMapper.java
 * 路径: com.xlzcx.xltz.dao
 * 时间: 2024-10-23 12:21
 * 版本: 1.0
 * 描述: TODO 文章/推文
 **/
public interface BTweetMapper {
    /**
     * 根据当前登录用户和城市获取推文数量
     *
     * @param city 城市编号
     * @return 文章列表
     */
    Long getTweetTotalByCity(@Param("city") String city);

    /**
     * 根据当前登录用户和城市获取推文
     *
     * @param userId   用户编号
     * @param city     城市编号
     * @param offset   从第七条查起
     * @param pageSize 没有条数
     * @return 文章列表
     */
    List<BTweetVo> getTweetByCity(@Param("userId") Long userId, @Param("city") String city, @Param("offset") Long offset, @Param("pageSize") int pageSize);


    /**
     * 根据关注信息获取论坛调试
     *
     * @param userId 当前登录用户id
     * @return 关注的论坛条数
     */
    Long getTweetTotalByFollow(Long userId);

    /**
     * 发布文章
     *
     * @param bTweet 文章对象
     * @return 成功大于1
     */
    int addTweet(BTweet bTweet);

    /**
     * 根据关注信息获取推文
     *
     * @param userId   当前登录用户编号
     * @param offset   从第几条开始
     * @param pageSize 查询条数
     * @return 论坛列表
     */
    List<BTweetVo> getTweetByFollow(@Param("userId") Long userId, @Param("offset") Long offset, @Param("pageSize") int pageSize);

    /**
     * 获取论坛总条数
     *
     * @return 总条数
     */
    Long getTweetAllTotal();

    /**
     * @param userId   当前登录用户编号
     * @param offset   第几条开始
     * @param pageSize 查询几条
     * @return 论坛列表
     */
    List<BTweetVo> getTweetAllList(@Param("userId") Long userId, @Param("offset") Long offset, @Param("pageSize") int pageSize);

    /**
     * 根据用户编号获取用户发布的文章总数
     *
     * @param userId 文章编号
     * @return 文章总数
     */
    Integer getTweetTotalByUserId(@Param("userId") Long userId);

    /**
     * 根据用户编号获取用户发布的所有文章
     *
     * @param userId   用户编号
     * @param offset   当前页码
     * @param pageSize 每页条数
     * @return 文章列表
     */
    List<BTweetVo> getTweetByUserId(@Param("userId") Long userId, @Param("offset") Integer offset, @Param("pageSize") Integer pageSize);
}
